package cn.tedu.online.examination.system.ui;


import cn.tedu.online.examination.system.service.ExamService;

import javax.swing.*;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 客户端上下文，是客户端控制
 *
 * @author JokerQ
 * @date 2020/6/12 - 16:44
 */
public class ClientContext {
    /**
     * 通过计时器，显示软件界面
     * public void schedule(@NotNull java.util.TimerTask task,
     * long delay)
     * 任务 - 任务被调度。
     * 延迟 - 在任务之前毫秒的延迟将被执行
     */

    Timer timer1 = new Timer();
    private WelcomeWindow welcomeWindow;
    private LoginFrame loginFrame;
    private ExamService examService;

    public void setWelcomeWindow(WelcomeWindow welcomeWindow) {
        this.welcomeWindow = welcomeWindow;
    }

    public void setLoginFrame(LoginFrame loginFrame) {
        this.loginFrame = loginFrame;
    }

    public void setExamService(ExamService examService) {
        this.examService = examService;
    }

    public void showUI() {
        timer1.schedule(new TimerTask() {
            @Override
            public void run() {
                welcomeWindow.setVisible(true);
                System.out.println("开始了！");
            }
        }, 0);
        timer1.schedule(new TimerTask() {
            @Override
            public void run() {
                timer1.cancel();
                welcomeWindow.setVisible(false);
                loginFrame.setVisible(true);
                System.out.println("结束了");
            }
        }, 2000);
    }

    /**
     * 当点击登录按钮时候要处理登录流程
     * 1)从登录界面获取Id和PWD
     * 2）利用业务层登录验证功能，检查登录
     * 3）如果登录成功（界面流转控制）
     * a更新菜单界面，显示登录信息
     * b关闭登录界面
     * c显示主菜单界面
     * 4）如果登录有异常，留在登录界面不动，在登录界面上显示错误提示信息
     * <p>
     * （注入ExamService,加入set方法）
     */
    public void login() {
        int id = loginFrame.getUserId();
        String pwd = loginFrame.getPwd();
        String chacking = loginFrame.getChacking();
        String chack = loginFrame.getChack();
        System.out.println("id:" + id + ",pwd:" + pwd + ",chack:" + chack);
    }
    /**
     * cancel
     */
    public void exit(JFrame source) {
        int val = JOptionPane.showConfirmDialog(source, "真的要离开吗？");
        if (val == JOptionPane.YES_OPTION) {
            source.setVisible(false);
            System.exit(0);
        }
    }

    public void register() {
        RegisterFrame registerFrame = new RegisterFrame();
        registerFrame.setVisible(true);
        registerFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
